import {
	isEmpty,
	inArray
} from './verify.js'
import {
	urlEncode
} from './util.js'

/**
 * tabBar页面路径列表 (用于链接跳转时判断)
 * tabBarLinks为常量, 无需修改
 */
const getTabBarLinks = () => {
	const tabBarLinks = [
		'pages/index/index',
		'pages/camp/index',
		'pages/user/index'
	]
	return tabBarLinks
}

export default {
	/**
	 * 显示成功提示框
	 */
	showSuccess: (msg, callback) => {
		uni.showToast({
			title: msg,
			icon: 'success',
			mask: true,
			duration: 1500,
			success() {
				callback && callback()
			}
		})
	},

	/**
	 * 显示失败提示框
	 */
	showError: (msg, callback) => {
		uni.showModal({
			title: '友情提示',
			content: msg,
			showCancel: false,
			success(res) {
				callback && callback()
			}
		})
	},

	/**
	 * 显示纯文字提示框
	 */
	showToast: (msg, duration = 1500, mask = true) => {
		uni.showToast({
			title: msg, // 提示的内容
			icon: 'none',
			mask, // 是否显示透明蒙层，防止触摸穿透
			duration // 提示的延迟时间，单位毫秒，默认：1500  
		})
	},

	/**
	 * 跳转到指定页面url
	 * 支持tabBar页面
	 * @param {string}  url   页面路径
	 * @param {object}  query 页面参数
	 * @param {string}  modo  跳转类型(默认navigateTo)
	 */
	navTo: (url, query = {}, modo = 'navigateTo') => {
		if (!url || url.length == 0) {
			return false
		}
		// tabBar页面, 使用switchTab
		if (inArray(url, getTabBarLinks())) {
			uni.switchTab({
				url: `/${url}`
			})
			return true
		}
		// 生成query参数
		const queryStr = !isEmpty(query) ? '?' + urlEncode(query) : ''
		// 普通页面, 使用navigateTo
		modo === 'navigateTo' && uni.navigateTo({
			url: `/${url}${queryStr}`
		})
		// 特殊指定, 使用redirectTo
		modo === 'redirectTo' && uni.redirectTo({
			url: `/${url}${queryStr}`
		})
		return true
	}
}
